home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / btnc200 / logfile.c < prev    next >
C/C++ Source or Header  |  1996-09-30  |  4KB  |  245 lines

  1. /*------------------------------------------------
  2. //
  3. // Module: module logfile.c
  4. //
  5. // Objet : Gestion de fichier traceur type 'logfile'
  6. //
  7. // ToDo  : 
  8. //
  9. //
  10. //
  11. // Maintenance :
  12. //
  13. //     Auteur  : Olivier Booklage
  14. //     Version : V1.1
  15. //     Date    : 05/05/1996
  16. //     Remarq. : On peut optimiser..
  17. //
  18. //  Source pour PURE-C / Sozobon 2.02 eXtended version
  19. //-----------------------------------------------*/
  20.  
  21.  
  22. /* ---       Includes externes       -- */
  23.  
  24. #include    <stdio.h>
  25. #include    <stdlib.h>
  26. #include    <string.h>
  27. #include    <stdarg.h>
  28. #include    <limits.h>
  29. #include    <aes.h>
  30. #include    "portab.h"
  31.  
  32. /* ---       Includes internes       -- */
  33. /* --- Constantes globales internes --- */
  34. /* --- Structures globales internes --- */
  35. /* --- Variables globales  internes --- */
  36.  
  37. static FILE *logfile=NULL;
  38. static char flag_logfile_opened=FALSE;
  39. static char logfilename[128];
  40. WORD    ret;
  41.  
  42. /* ---     Prototypage extern      --- */
  43.  
  44. BOOLEAN logfile_open( char *file );
  45.  
  46. WORD STD_printf(char *fmt,...);
  47. WORD ALL_printf(char *fmt,...);
  48. WORD LOG_printf(char *fmt,...);
  49. WORD ERR_printf(char *fmt,...);
  50.  
  51. WORD STD_puts(char *string);
  52. WORD ALL_puts(char *string);
  53. WORD LOG_puts(char *string);
  54. WORD ERR_puts(char *string);
  55.  
  56. BOOLEAN logfile_close(void);
  57.  
  58. VOID write_disk_error(char *message);
  59. VOID read_disk_error(char *message);
  60.  
  61. /* ---     Prototypage interne      --- */
  62.  
  63. /* ---          Fonctions           ----*/
  64.  
  65. BOOLEAN logfile_open( char *file )
  66. {
  67.  
  68.     if (flag_logfile_opened==TRUE)    return(FALSE);
  69.  
  70.     logfile = fopen( file ,"w");
  71.     if ( logfile == NULL)            return(FALSE);
  72.     setvbuf(logfile,NULL,_IOFBF,32*1024L);
  73.     flag_logfile_opened=TRUE;
  74.     strcpy(logfilename,file);
  75.     
  76. return(TRUE);
  77. }
  78.  
  79. /*-------------------------------*/
  80.  
  81. WORD STD_printf(char *fmt,...)
  82. {
  83. va_list    args;
  84.  
  85.     va_start(args,fmt);
  86.     ret=vfprintf(stdout,fmt,args);
  87.     va_end(args);
  88.  
  89. return(ret);
  90. }
  91.  
  92. /*-------------------------------*/
  93.  
  94. WORD ALL_printf(char *fmt,...)
  95. {
  96. va_list    args;
  97.  
  98.     va_start(args,fmt);
  99.     vfprintf(stdout,fmt,args);
  100.     va_end(args);
  101.  
  102.     if (flag_logfile_opened!=TRUE)    return(0);
  103.     
  104.     va_start(args,fmt);
  105.     vfprintf(logfile,fmt,args);
  106.     va_end(args);
  107.     ret=fflush(logfile);
  108.     if( ret==EOF )    write_disk_error("Logfile");
  109. return(ret);
  110. }
  111.  
  112. /*-------------------------------*/
  113.  
  114. WORD ERR_printf(char *fmt,...)
  115. {
  116. va_list    args;
  117.  
  118. /* printf */
  119.  
  120.     va_start(args,fmt);
  121.     vfprintf(stderr,fmt,args);
  122.     va_end(args);
  123.  
  124. /* logfile */
  125.  
  126.     if (flag_logfile_opened!=TRUE)    return(0);
  127.  
  128.     va_start(args,fmt);
  129.     vfprintf(logfile,fmt,args);
  130.     va_end(args);
  131.     ret=fflush(logfile);
  132.     if( ret==EOF )    write_disk_error("Logfile");
  133.         
  134. return(ret);
  135. }
  136.  
  137. /*-------------------------------*/
  138.  
  139. WORD LOG_printf(char *fmt,...)
  140. {
  141. va_list    args;
  142.  
  143.     if (flag_logfile_opened!=TRUE)    return(0);
  144.  
  145.     va_start(args,fmt);
  146.     vfprintf(logfile,fmt,args);
  147.     va_end(args);
  148.  
  149.     ret=fflush(logfile);
  150.     if( ret==EOF )    write_disk_error("Logfile");
  151.     
  152. return(ret);
  153. }
  154.  
  155. /*-------------------------------*/
  156.  
  157. WORD STD_puts( char *string)
  158. {
  159.  
  160.     ret=fputs(string,stdout);
  161.  
  162. return(ret);
  163. }
  164.  
  165. /*-------------------------------*/
  166.  
  167. WORD LOG_puts( char *string )
  168. {
  169.  
  170.     if (flag_logfile_opened==FALSE)    return(0);
  171.     fputs(string,logfile);
  172.     ret=fflush(logfile);
  173.     if( ret==EOF )    write_disk_error("Logfile");
  174.     
  175. return(ret);
  176. }
  177.  
  178. /*-------------------------------*/
  179.  
  180. WORD ALL_puts( char *string)
  181. {
  182.  
  183.             STD_puts( string );
  184.     ret=LOG_puts( string );
  185.     
  186. return( ret );
  187. }
  188.  
  189. /*-------------------------------*/
  190.  
  191. WORD ERR_puts( char *string)
  192. {
  193.  
  194. /* puts */
  195.  
  196.     fputs(string,stderr);
  197.     
  198.     if (flag_logfile_opened==FALSE)    return(0);
  199.  
  200. /* logfile */
  201.  
  202.     fputs(string,logfile);
  203.     ret=fflush(logfile);
  204.     if( ret==EOF )    write_disk_error("logfile");
  205.     
  206. return(ret);
  207. }
  208.  
  209. /*-------------------------------*/
  210.  
  211. BOOLEAN logfile_close(void)
  212. {
  213.     if (flag_logfile_opened==FALSE)    return(FALSE);
  214.     fclose(logfile);
  215.     flag_logfile_opened=FALSE;
  216.     return(TRUE);
  217. }
  218.  
  219. VOID write_disk_error(char *message)
  220. {
  221. char i;
  222.  
  223.     fprintf(stderr,"\n\n** DISK WRITE ERROR on %s **\n",message);
  224.     for(i=0;i<10;i++)
  225.     {
  226.         fputs("\a",stderr);
  227.         evnt_timer(1000,0);
  228.     }
  229.     exit(1);
  230. }
  231.  
  232. VOID read_disk_error(char *message)
  233. {
  234. char i;
  235.  
  236.     fprintf(stderr,"\n\n** DISK READ ERROR on %s **\n",message);
  237.     for(i=0;i<10;i++)
  238.     {
  239.         fputs("\a",stderr);
  240.         evnt_timer(1000,0);
  241.     }
  242.     exit(1);
  243. }
  244. /* ---          EOF                 --- */
  245.